import re
import logging
from config import Config

# 设置日志
logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s - %(levelname)s - %(message)s"
)
logger = logging.getLogger(__name__)


def document_dvp_version(text):
    """
    提取版本号（格式：版本号：X.X）
    :param text: 文本内容
    """
    if not Config.DOCUMENT_VERSION_PATTERN:
        logger.warning(f"⚠️ 版本号正则表达式未配置！请检查config.py中的DOCUMENT_VERSION_PATTERN")
        return None
    
    match = re.search(Config.DOCUMENT_VERSION_PATTERN, text)
    if match:
        # 拼接两个捕获组，形成X.X格式
        version = f"{match.group(1)}.{match.group(2)}"
    else:
        version = None
    
    logger.info(f"🔍 版本号提取：文本片段→{text[:20]}... | 提取结果→{version}")
    return version


def approval_version(text):
    """
    提取版本号（格式：X.X/）
    :param text: 文本内容
    """
    if not Config.APPROVAL_VERSION_PATTERN:
        logger.warning(f"⚠️ 版本号正则表达式未配置！请检查config.py中的APPROVAL_VERSION_PATTERN")
        return None
    
    match = re.search(Config.APPROVAL_VERSION_PATTERN, text)
    if match:
        # 拼接两个捕获组，形成X.X格式
        version = f"{match.group(1)}.{match.group(2)}"
    else:
        version = None
    
    logger.info(f"🔍 版本号提取：文本片段→{text[:20]}... | 提取结果→{version}")
    return version



def extract_page_number(text):
    """
    提取页码（格式：X/X）
    :param text: 文本内容
    :return: 页码字符串
    """
    if not Config.PAGE_NUMBER_PATTERN:
        logger.warning(f"⚠️ 页码正则表达式未配置！请检查config.py中的PAGE_NUMBER_PATTERN")
        return None
    
    match = re.search(Config.PAGE_NUMBER_PATTERN, text)
    page_num = f"{match.group(1)}/{match.group(2)}" if match else None
    logger.info(f"🔍 页码提取：文本片段→{text[:20]}... | 提取结果→{page_num}")
    return page_num


def contains_keywords(text, keywords):
    """
    匹配关键词
    :param text: 文本内容
    :param keywords: 关键词列表
    :return: 匹配到的关键词，或None
    """
    if not keywords:
        logger.warning(f"⚠️ 关键词列表为空！请检查config.py中的关键词配置")
        return None
    
    for keyword in keywords:
        if keyword in text:
            logger.info(f"🔍 关键词匹配：文本→{text[:20]}... | 匹配关键词→{keyword}")
            return keyword
    return None


def identify_signature_type(text):
    """
    识别签字类型
    :param text: 文本内容
    :return: 签字类型字符串
    """
    if not Config.SIGNATURE_TYPES:
        logger.warning(f"⚠️ 签字类型列表未配置！请检查config.py中的SIGNATURE_TYPES")
        return None
    
    sig_type = contains_keywords(text, Config.SIGNATURE_TYPES)
    logger.info(f"🔍 签字类型识别：文本片段→{text[:60]}... | 识别结果→{sig_type}")
    return sig_type